Skip to content

knowledge: 11 insights — login-expired panes, O_APPEND blackboard, numbered-protocol grafts, --ours on mixed conflicts, unittest floor false positives, SwiftUI sheet gating, silent hotkey registration, rolled-back-run assertions (+3 merges) - #180

Open
choiyounggi wants to merge 4 commits into
mainfrom
knowledge/choiyounggi-20260903-184706

Conversation

@choiyounggi

Copy link
Copy Markdown
Owner

Knowledge flush — 12 insight(s)

Claimed 12 rows from ~/.dev-loop/queue (run 20260903-184620-64173, launched by the auto-flush hook). 11 ingested on this branch (8 new pages, 3 amended pages, 1 new category), 1 folded into open PR #179's branch. Baseline and post-ingest lint: wiki-lint-prohibitions 0 violations, wiki-structure-checks 0 findings (283 pages, 13 indexes). All related: ids and inline [id] refs resolve on this branch.

Verified best-practice

  1. zsh keeps an unquoted $var as one word (set -- $args launch helper starts malformed tmux sessions) — MERGED into platforms-shells-portable-shell-scripts. Source: zsh manual, Expansion §14.3 ("words of unquoted parameters are not automatically split on whitespace unless the option SH_WORD_SPLIT is set") — already cited on the page; new edge-case + Instead-of rows and a field line (2026-08-21, dev-loop issue orchestrate: launch-session.sh accepts space-containing session names and non-worktree dirs — zsh word-splitting in the coordinator silently launches broken workers #123). verified.
  2. Membership tests over jq output belong inside jq, not a shell for loop — MERGED into the same page as step 9. Source: https://jqlang.org/manual/ (index(s), IN(s), --arg/--argjson) fetched and quoted; field line 2026-08-27 ("Auth Token" producer: 0 rejections in the shell loop, 3 once the test moved into jq). verified.
  3. One shared append file for many workers: prescribe one O_APPEND write per entry, keep read-modify-write tools off it — NEW infrastructure-agent-orchestration-concurrent-blackboard-append-file. Sources: POSIX write() (https://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html — offset-set-plus-write is atomic under O_APPEND; "each write is atomic" for regular files) and pipe(7) (https://man7.org/linux/man-pages/man7/pipe.7.html) cited only to keep PIPE_BUF from being misread as a regular-file guarantee. verified.
  4. Grafting a step into a numbered protocol: trace execution order end to end, state any reordering as an explicit exception with its own spec test — NEW infrastructure-agent-orchestration-forward-references-in-a-numbered-protocol. No external primary source governs this authoring practice; rests on the 2026-08-27 field reproduction (scoped review passed, fresh-context whole-diff review found the forward reference, fix c06d299, round-2 clean). field-tested, stated in the page.
  5. Login expired · Please run /login in an unattended pane is terminal, not a stall; coordinator finishes mechanical bookkeeping itself — NEW infrastructure-agent-orchestration-login-expiry-during-unattended-turns, plus the conflated "usage-limit or re-auth notice" row in unattended-worker-questions split into two rows. Sources fetched and quoted by me: https://code.claude.com/docs/en/authentication ("each model request fails with Login expired · Please run /login until you sign in again"; "Renewing early matters most for sessions that run unattended"; apiKeyHelper) and https://code.claude.com/docs/en/errors. Field: run i11475, 2026-08-18. verified.
  6. Before git checkout --ours + count fix on a doc conflict, diff the branch side of that file for non-count content — NEW infrastructure-agent-orchestration-ours-resolution-on-a-mixed-content-conflict. Git primitives verified at https://git-scm.com/docs/git-checkout (--ours/--theirs = stage 2/3) and https://git-scm.com/docs/git-merge (three-stage index, git show :3:file); the directive itself is field-derived (linkly 2026-08-24, RFC-0028 row lost, 4 currency-test failures). field-tested.
  7. A regex assertion floor keyed on bare assert/pytest.raises false-positives on unittest self.assertX; adjudicate with the canonical script, fix the scanner not the tests — NEW testing-quality-assertion-scanner-false-positive-on-unittest-convention. Sources: https://docs.python.org/3/library/unittest.html ("These methods are used instead of the assert statement") and https://docs.pytest.org/en/stable/how-to/assert.html. Field: linkly t96/t85, 2026-08-24, canonical test-floor.sh rc 0. verified.
  8. Worker in a linked worktree creates its state dir at the main checkout; brief must say worktree-relative, and a pre-write worktree_escape gets deny + relative alternative — FOLDED into open PR knowledge: 12 insights — deny rules under bypass, merged-tree gate, worker verify command, Kotlin daemon heap, extracted-method this (+7 merges) #179 (see Open-PR check). Mechanism reproduced by the research agent in a scratch repo: from a linked worktree git rev-parse --show-toplevel returns the worktree root while --git-common-dir returns the main checkout's .git (https://git-scm.com/docs/git-rev-parse defines both options; the divergence is reproduced, not doc-stated). field-tested for the causal claim.
  9. A second .sheet/.fullScreenCover from an already-presenting SwiftUI host is refused; gate the screen-level error sheet — NEW mobile-presentation-gating-nested-sheet-presentation (new category, see Routing). Apple's API pages (sheet(item:onDismiss:content:), fullScreenCover(item:onDismiss:content:)) document the surface but not the single-presenter rule in prose; the runtime warning is corroborated by https://stackoverflow.com/questions/67180982 (title verified through the Stack Exchange API: "SwiftUI [Presentation] / Attempt to present View on ... which is already presenting"). Field: 4 sites across 3 review rounds, 2026-09-03. field-tested.
  10. Silent RegisterEventHotKey failure in a Finder-launched macOS app: probe with a synthetic key event + window list before restarting — NEW debugging-methodology-silent-registration-failure-in-a-finder-launched-app. The candidate's stated cause ("another process took the key") was corrected against Apple's CarbonEventsCore.h (fetched from the phracker/MacOSX-SDKs mirror, HTTP 200, lines 146–152): eventHotKeyExistsErr (-9878) means the same process already registered it, and "it is not an error to register the same hotkey in multiple processes" unless kEventHotKeyExclusive is used. Also https://developer.apple.com/documentation/coregraphics/cgwindowlistcopywindowinfo(_:_:) and Hammerspoon issue #1261 (title verified: "RegisterEventHotKey failed: -9878"). Field: 2026-08-18 F7/F8 probe. field-tested (diagnostic method is field-derived; the error semantics are verified).
  11. A CLI flag validated by a boot probe but never threaded to the consuming constructor is a no-op; follow the call chain and assert the driver in use — MERGED into testing-mocking-captured-call-arguments (edge-case row, Instead-of row, field line 2026-08-28, related link to backend-common-api-design-unenforced-declarations). The page's existing sources (unittest.mock, Jest, Mockito, PIT) already back the state-assertion method; the wiring variant is field-derived. field-tested addition to a verified page.
  12. After a run that failed and rolled back, assert on the trace/log, not the store — NEW testing-quality-store-assertions-after-a-rolled-back-run. Sources fetched and quoted: https://www.postgresql.org/docs/current/sql-rollback.html ("causes all the updates made by the transaction to be discarded") and https://peps.python.org/pep-0249/ (.rollback() "roll back to the start of any pending transaction"). Field: linkly interpreter, 2026-08-31, KeyError traced to repo.rollback() in the non-completed branch. verified.

Existing-layer check

Pages read: platforms-shells-portable-shell-scripts, platforms-shells-command-text-inspected-before-execution, platforms-processes-driving-a-tui-in-a-tmux-pane, platforms-processes-background-services, platforms-processes-tool-diagnostics-without-a-failing-exit-code, infrastructure-ci-cd-changed-files-only-gates, infrastructure-agent-orchestration-shared-run-state, infrastructure-agent-orchestration-worktree-isolated-workers, infrastructure-agent-orchestration-session-completion-gates, infrastructure-agent-orchestration-dispatching-after-a-completion-report, infrastructure-agent-orchestration-unattended-worker-questions, infrastructure-agent-orchestration-usage-limit-paused-workers, infrastructure-agent-orchestration-control-signals-vs-primary-artifacts, infrastructure-agent-orchestration-autonomous-decision-rulings, infrastructure-config-path-valued-config, backend-common-storage-multi-object-write-ordering, backend-common-llm-binding-instructions-for-agents, backend-common-change-impact-widening-a-closed-value-table, backend-common-change-impact-call-site-enumeration, backend-common-api-design-unenforced-declarations, backend-common-integrations-externally-owned-defaults, backend-common-orm-transaction-boundaries, qa-process-adversarial-change-review, qa-process-evaluating-review-feedback, qa-process-completion-claims, qa-document-verification-spec-document-gates, qa-deliverables-quantitative-claims-in-a-published-document, testing-quality-checks-that-cannot-pass, testing-quality-tests-that-cannot-fail, testing-quality-spec-artifact-checks, testing-quality-write-path-assertions, testing-mocking-captured-call-arguments, testing-data-test-data-and-isolation, debugging-methodology-probe-path-vs-operation-path

Domain indexes read: INDEX.md and wiki/{platforms,infrastructure,testing,qa,backend,backend/python,debugging,mobile}/index.md. Also read from PR #179's head (not on main, so not listed above): semantic-conflicts-after-parallel-merge, verify-command-in-a-worker-brief, deny-rules-under-bypassed-permissions.

Overlaps and outcomes:

Open-PR check

Open knowledge/* heads: #179 (knowledge/choiyounggi-20260903-172728) only. Fetched and diffed against origin/main for wiki/ (36 files).

Candidate Overlap with #179 Verdict
#1, #2 (zsh/jq) none (its platforms touches are path-resolution, unicode-text-matching, sysroot, bsd-vs-gnu, deny-rules) new
#3 (O_APPEND) shared-run-state edited in #179 for coordinator-liveness and bats-fixture escalations; no append-file content new
#4 (forward refs) none new
#5 (login expiry) none — #179 never mentions /login, OAuth, or credentials new
#6 (--ours on mixed content) #179's new semantic-conflicts-after-parallel-merge is scoped to merges with no textual conflict; #6 is the textual-conflict resolution choice new (cross-link to that id deferred until #179 merges, since the id does not exist on main)
#7 (assertion scanner) #179 touches checks-that-cannot-pass only in related: new
#8 (worktree state dir) #179 adds a post-hoc patch-transfer row to worktree-isolated-workers for edits that already landed in main; #8's pre-write deny + relative-path response and the --git-common-dir mechanism are not there fold — pushed as a separate commit onto #179's branch (same page, disjoint rows) rather than editing that page here, which would conflict with #179 on merge
#9, #10 #179 touches no mobile page; its debugging touches are hypothesis-testing/reading-error-messages new
#11 #179 touches what-to-mock and captured-call-arguments only via related: new
#12 #179's test-data-and-isolation edit is about sandbox config discovery new

Expected merge friction with #179: both branches append to log.md and both insert rows in wiki/infrastructure/index.md's agent-orchestration table (this branch inserts after the dispatching-after-a-completion-report row, #179 edits the shared-run-state/worktree-isolated-workers rows and appends two rows at the end — non-adjacent, so expected to auto-merge; log.md will need a trivial both-sides resolution).

Routing decision

# Target Kind
1, 2 platforms/shells → portable-shell-scripts merge
3 infrastructure/agent-orchestration → concurrent-blackboard-append-file new page
4 infrastructure/agent-orchestration → forward-references-in-a-numbered-protocol new page
5 infrastructure/agent-orchestration → login-expiry-during-unattended-turns (+ row split in unattended-worker-questions) new page + merge
6 infrastructure/agent-orchestration → ours-resolution-on-a-mixed-content-conflict new page
7 testing/quality → assertion-scanner-false-positive-on-unittest-convention new page
8 infrastructure/agent-orchestration → worktree-isolated-workers on PR #179's branch fold
9 mobile/presentationgating-nested-sheet-presentation new page, new category
10 debugging/methodology → silent-registration-failure-in-a-finder-launched-app new page
11 testing/mocking → captured-call-arguments merge
12 testing/quality → store-assertions-after-a-rolled-back-run new page

New category justification (#9): mobile's existing categories are lifecycle, offline, networking, release, performance, navigation, permissions, security. Modal presentation contention (several sheets/covers on one host, screen-level error sheets, persistent tabs) is a UI-composition concern none of them owns; navigation covers entry routing (deep links, push taps), not presentation stacking. The domain index preamble and the root INDEX.md route line were extended to name it.

All other candidates fit existing categories; no other category was added. Project-specific wording (linkly, loop-implement, task ids) was generalized in page bodies and kept only in dated field-evidence lines.

@choiyounggi

Copy link
Copy Markdown
Owner Author

Fold from the 2026-09-03 20:38 flush (queue hash 142c89b3): pushed 75b0354 — adds the shipped-commit negative-control step to assertion-scanner-false-positive-on-unittest-convention (run the floor against an already-merged commit; a uniform failure there proves the gate is the defect), one Instead-of row, a testing-quality-harness-reverse-controls related link, and the linkly test-floor.sh vs 305f8e2 (PR #81) reproduction as evidence. Candidate retired as folded; no sibling PR opened.

@choiyounggi

Copy link
Copy Markdown
Owner Author

Folded one queued candidate from flush run 20260903-213946-4161 into this branch (commit 3b78273) instead of opening a sibling PR:

  • ours-resolution-on-a-mixed-content-conflict: when-this-applies sentence, edge-case row and instead-of row — when briefing parallel workers who will each update a count a currency test checks, tell each to write its own measured value so its branch stays green, then reconcile from the merged file per the Do table. Field evidence: linkly 2026-08-25, brief t119 said "do not touch the README count" and failed 4 test_readme_currency cases (2702 vs 2706) while t112/t115/t117, told to keep their measured values, stayed green through merge.

Index load-when cell updated; log.md appended; wiki-structure-checks and wiki-lint-prohibitions both clean on the branch.

…ses into login-expiry and assertion-scanner pages
@choiyounggi

Copy link
Copy Markdown
Owner Author

Folded from the 2026-09-04 knowledge-flush (candidates 9a9038861c1d93fc, b9e2ed778fd6d661): (1) login-expiry-during-unattended-turns +1 edge row — a pane showing Login expired while claude auth status says logged in and idle sibling sessions share the machine is a possible false expiry; kill idle siblings and relaunch before escalating; the shared-credential-file fact is verified against code.claude.com/docs/en/authentication, the refresh-token race is labelled a hypothesis (RFC 9700 §2.2.2 cited as the general pattern only). (2) assertion-scanner-false-positive-on-unittest-convention +Do item 6, +1 edge row, +sources — a path/name classifier with no .rs entry (dev-loop's own test-floor.sh classify()) reports no-tests on Rust inline #[cfg(test)] modules; read the pattern list and treat it as floor=unknown instead of spending a rework round. Index rows extended; no new page.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dev-loop:knowledge Auto-opened wiki knowledge ingest PR (owner reviews & merges)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant